
/**
 * 
 * 数据分类
 * 
 * 题目描述

对一个数据 a 进行分类，分类方法为：此数据 a（四个字节大小）的四个字节相加对一个给定的值 b 取模

如果得到的结果小于一个给定的值 c，则数据 a 为有效类型，其类型为取模的值
如果得到的结果大于或者等于 c，则数据 a 为无效类型
比如一个数据 a = 0x01010101，b = 3，
按照分类方法计算（0x01+0x01+0x01+0x01）% 3 = 1，
所以如果 c = 2，则此 a 为有效类型，其类型为 1，如果 c = 1，则此 a 为无效类型；
又比如一个数据 a = 0x01010103，b = 3，
按照分类方法计算（0x01+0x01+0x01+0x03）% 3 = 0，
所以如果 c = 2，则此 a 为有效类型，其类型为 0，如果c = 0，则此 a 为无效类型。
输入 12 个数据，第一个数据为 c，第二个数据为 b，剩余 10 个数据为需要分类的数据，

请找到有效类型中包含数据最多的类型，并输出该类型含有多少个数据。

输入描述
输入 12 个数据，用空格分隔，第一个数据为 c，第二个数据为 b，剩余 10 个数据为需要分类的数据。

输出描述
输出最多数据的有效类型有多少个数据。

用例
输入	3 4 256 257 258 259 260 261 262 263 264 265
输出	3
说明	
10个数据4个字节相加后的结果分别为1 2 3 4 5 6 7 8 9 10，
故对4取模的结果为1 2 3 0 1 2 3 0 1 2，c为3，所以0 1 2都是有效类型，类型为1和2的有3个数据，类型为0的只有2个数据，故输出3。
输入	1 4 256 257 258 259 260 261 262 263 264 265
输出	2
说明	
10个数据4个字节相加后的结果分别为1 2 3 4 5 6 7 8 9 10，
故对4取模的结果为1 2 3 0 1 2 3 0 1 2，c为1，
所以只有0是有效类型，类型为0的有2个数据，故输出2。

 */

import java.util.Collections;
import java.util.HashMap;
import java.util.Scanner;

/**
  *
  题目解析
本题是逻辑模拟题。按照题目要求模拟逻辑即可。

本题主要难点在于，如何将数据 a 的四个字节分别取出。

这里有两种思路：

字符串解析：将十进制数 a 转为 十六进制串 hexStr，然后hexStr从尾部每次读两位，不足两位则读低位，读出来的部分重新变为一个新十六进制数。
位运算：

a & 0xff：即可获得 a 的低位字节值，因为按位与（&）运算，运算的两个数对应位都为1，结果才为1，否则结果为0。

  


可以发现 258 & 0xff 的结果就是 258 的低位字节值

获得 a（258） 的低位字节后，我们可以将 a >>= 8（右移八位），即可去除低位字节，然后继续上面 a & 0xff 的逻辑获取低位字节值，直到 a == 0。


上面两种思路中，位运算思路更优，因此下面代码实现使用位运算思路。

  */
public class 数据分类 {
    
    public static void main(String[] args) {
        

        Scanner sc = new Scanner(System.in);
 
        int c = sc.nextInt();
        int b = sc.nextInt();
 
        HashMap<Integer, Integer> count = new HashMap<>();
 
        for (int i = 0; i < 10; i++) {
            int a = sc.nextInt();
 
            // 数据 a（四个字节大小）的四个字节相加
            int sum = 0;
            while (a > 0) {
                sum += a & 0xff; // 累加最低字节的大小
                a >>= 8; // 一个字节八位, a右移八位, 将最低字节移除
            }
 
            // 对一个给定的值 b 取模, 取模的值即为数据 a 的类型
            int type = sum % b;
 
            // 小于一个给定的值 c，则数据 a 为有效类型
            if (type < c) {
                // 对应类型出现次数+1
                count.put(type, count.getOrDefault(type, 0) + 1);
            }
        }
 
 
        // 输出最多数据的有效类型有多少个数据
        System.out.println(Collections.max(count.values()));
    }
}
